package com.cssw.fyzb.tps.config.adapay;

import com.huifu.adapay.Adapay;
import com.huifu.adapay.model.MerConfig;
import lombok.Getter;
import lombok.Setter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * @Author: yangyiqun
 */
@Component
@Getter
@Setter
public class AdapayConfig {

    @Value("${config.adapay.appId}")
    private String appId ;

    @Value("${config.adapay.apiKey}")
    private String apiKey ;

    @Value("${config.adapay.mockApiKey}")
    private String mockApiKey;

    @Value("${config.adapay.rsaPrivateKey}")
    private String rsaPrivateKey;

    @Value("${config.adapay.debug:true}")
    private boolean debug;

    @Value("${config.adapay.prodMode:true}")
    private boolean prodMode;

    @Value("${config.adapay.notifyUrl}")
    private String notifyUrl ;

    @Value("${config.adapay.drawcashNotifyUrl}")
    private String drawcashNotifyUrl ;

    private static final Logger logger = LoggerFactory.getLogger(AdapayConfig.class);

    @PostConstruct
    public void init() throws Exception {
        /**
         * debug 模式，开启后有详细的日志
         */
        Adapay.debug = this.debug;

        /**
         * prodMode 模式，默认为生产模式，false可以使用mock模式
         */
        Adapay.prodMode = this.prodMode;

        /**
         * 初始化商户配置，服务器启动前，必须通过该方式初始化商户配置完成
         * apiKey为prod模式的API KEY
         * mockApiKey为mock模式的API KEY
         * rsaPrivateKey为商户发起请求时，用于请求参数加签所需要的RSA私钥
         */
        MerConfig merConfig = new MerConfig();
        merConfig.setApiKey(this.apiKey);
        merConfig.setApiMockKey(this.mockApiKey);
        merConfig.setRSAPrivateKey(this.rsaPrivateKey);
        Adapay.initWithMerConfig(merConfig);
    }
}
